package com.leyou.config;

import com.leyou.common.auth.utils.JwtUtils;
import com.leyou.common.auth.utils.RsaUtils;
import lombok.Data;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.security.PrivateKey;
import java.security.PublicKey;

/**
 * @author: guojy
 * @date: 2020/3/18 10:40
 * @Description: TODO 从配置文件中加载秘钥地址
 * @version: 1.0
 */
@Data
@ConfigurationProperties("ly.jwt")
public class JwtProperties implements InitializingBean {
    // 公钥地址
    private String pubKeyPath;
    // 私钥地址
    private String priKeyPath;

    /**
     * 希望 当项目启动，直接获取秘钥对象。
     * 当每一次使用公钥和私钥的时候，希望直接能在当前项目中获取
     * 而不是每次取读取文件，多写代码
     */
    private PublicKey publicKey;
    private PrivateKey privateKey;

    /**
     * 获取公钥和私钥对象
     *
     * @throws Exception
     */
    @Override
    public void afterPropertiesSet() throws Exception {

        try {
            this.publicKey = RsaUtils.getPublicKey(pubKeyPath);
            this.privateKey = RsaUtils.getPrivateKey(priKeyPath);
        } catch (Exception e) {
            throw new RuntimeException();
        }
    }


}
